package com.ruoyi.quanzi.service;

import java.util.List;
import com.ruoyi.quanzi.domain.SunPost;

/**
 * 帖子服务接口
 * 
 * @author ruoyi
 * @date 2023-01-15
 */
public interface ISunPostService 
{
    /**
     * 查询帖子
     * 
     * @param id 帖子ID
     * @return 帖子
     */
    public SunPost selectSunPostById(Long id);

    /**
     * 查询帖子列表
     * 
     * @param sunPost 帖子
     * @return 帖子集合
     */
    public List<SunPost> selectSunPostList(SunPost sunPost);

    /**
     * 新增帖子
     * 
     * @param sunPost 帖子
     * @return 结果
     */
    public int insertSunPost(SunPost sunPost);

    /**
     * 修改帖子
     * 
     * @param sunPost 帖子
     * @return 结果
     */
    public int updateSunPost(SunPost sunPost);

    /**
     * 批量删除帖子
     * 
     * @param ids 需要删除的帖子ID
     * @return 结果
     */
    public int deleteSunPostByIds(Long[] ids);

    /**
     * 删除帖子信息
     * 
     * @param id 帖子ID
     * @return 结果
     */
    public int deleteSunPostById(Long id);
    
    /**
     * 根据话题ID查询帖子列表
     * 
     * @param topicId 话题ID
     * @param orderBy 排序方式
     * @param status 状态
     * @return 帖子集合
     */
    public List<SunPost> selectPostsByTopic(Long topicId, String orderBy, Integer status);
    
    /**
     * 根据用户ID查询帖子列表
     * 
     * @param userId 用户ID
     * @param status 状态
     * @param orderBy 排序方式
     * @return 帖子集合
     */
    public List<SunPost> selectPostsByUser(Long userId, Integer status, String orderBy);
    
    /**
     * 查询热门帖子
     * 
     * @param limit 限制数量
     * @return 帖子集合
     */
    public List<SunPost> selectHotPosts(Integer limit);
    
    /**
     * 查询推荐帖子
     * 
     * @param userId 用户ID
     * @param limit 限制数量
     * @return 帖子集合
     */
    public List<SunPost> selectRecommendPosts(Long userId, Integer limit);
    
    /**
     * 搜索帖子
     * 
     * @param keyword 关键词
     * @param topicId 话题ID
     * @param status 状态
     * @return 帖子集合
     */
    public List<SunPost> searchPosts(String keyword, Long topicId, Integer status);
    
    /**
     * 查询用户收藏的帖子
     * 
     * @param userId 用户ID
     * @param status 状态
     * @return 帖子集合
     */
    public List<SunPost> selectCollectedPosts(Long userId, Integer status);
    
    /**
     * 查询用户点赞的帖子
     * 
     * @param userId 用户ID
     * @param status 状态
     * @return 帖子集合
     */
    public List<SunPost> selectLikedPosts(Long userId, Integer status);
    
    /**
     * 获取帖子详情
     * 
     * @param id 帖子ID
     * @param userId 用户ID
     * @return 帖子
     */
    public SunPost getPostDetail(Long id, Long userId);
    
    /**
     * 更新帖子阅读数
     * 
     * @param id 帖子ID
     * @return 结果
     */
    public int updatePostReadCount(Long id);
    
    /**
     * 更新帖子点赞数
     * 
     * @param id 帖子ID
     * @param likeCount 点赞数
     * @return 结果
     */
    public int updatePostLikeCount(Long id, Integer likeCount);
    
    /**
     * 更新帖子评论数
     * 
     * @param id 帖子ID
     * @param commentCount 评论数
     * @return 结果
     */
    public int updatePostCommentCount(Long id, Integer commentCount);
    
    /**
     * 更新帖子收藏数
     * 
     * @param id 帖子ID
     * @param collectCount 收藏数
     * @return 结果
     */
    public int updatePostCollectCount(Long id, Integer collectCount);
    
    /**
     * 更新帖子分享数
     * 
     * @param id 帖子ID
     * @return 结果
     */
    public int updatePostShareCount(Long id);
    
    /**
     * 审核帖子
     * 
     * @param id 帖子ID
     * @param auditStatus 审核状态
     * @param auditRemark 审核备注
     * @param auditBy 审核人
     * @return 结果
     */
    public int auditPost(Long id, Integer auditStatus, String auditRemark, String auditBy);
    
    /**
     * 批量审核帖子
     * 
     * @param ids 帖子ID数组
     * @param auditStatus 审核状态
     * @param auditRemark 审核备注
     * @param auditBy 审核人
     * @return 结果
     */
    public int batchAuditPost(Long[] ids, Integer auditStatus, String auditRemark, String auditBy);
}